/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Main.java
 *
 * Created on Apr 7, 2009, 9:24:33 AM
 */
package geomain;

import com.vividsolutions.jts.geom.Coordinate;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import javax.swing.JFrame;
import javax.swing.UIManager;
import modelo.DominioGeometrico;
import modelo.EvaluacionDominio;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import modelo.ArcoDirigido;
import modelo.PoliLinea;
import modelo.Punto;
import modelo.SegmentoLinea;
import org.jvnet.substance.skin.SubstanceNebulaBrickWallLookAndFeel;
//import org.jvnet.substance.skin.SubstanceNebulaBrickWallLookAndFeel;

/**
 *
 * @author Diego Anzola, Fredy Bello
 */
public class Main extends javax.swing.JFrame {

    private EvaluacionDominio miEvaluacionDominio = new EvaluacionDominio();
    private VentanaDefinicionGrilla miVentanaDefinicionGrilla = null;
    private VentanaVisualizacion miVentanaVisualizacion = null;
    private VentanaValidacion miVentanaValidacion = null;
    private VentanaSpaghetti miVentanaSpaghetti = null;
    private VentanaNodoArcoArea miVentanaNAA = null;
    private VentanaDouglasPeucker miVentanaDouglasPeucker = null;

    /** Creates new form Main */
    public Main() {
        initComponents();
        
        try {

        UIManager.setLookAndFeel(new SubstanceNebulaBrickWallLookAndFeel());
        UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceNebulaBrickWallLookAndFeel");

        } catch (Exception ex) {
        //Logger.getLogger(VentanaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        
        setExtendedState(JFrame.MAXIMIZED_BOTH);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        desktopPane = new javax.swing.JDesktopPane();
        menuBar = new javax.swing.JMenuBar();
        fileMenu = new javax.swing.JMenu();
        exitMenuItem = new javax.swing.JMenuItem();
        editMenu = new javax.swing.JMenu();
        menuItemDefinirTamanioGrilla = new javax.swing.JMenuItem();
        menuItemVisualizar = new javax.swing.JMenuItem();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuItem3 = new javax.swing.JMenuItem();
        jMenuItem4 = new javax.swing.JMenuItem();
        jMenuItem5 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Geomain");

        fileMenu.setText("Programa");

        exitMenuItem.setText("Salir");
        exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                exitMenuItemActionPerformed(evt);
            }
        });
        fileMenu.add(exitMenuItem);

        menuBar.add(fileMenu);

        editMenu.setText("Dominio");

        menuItemDefinirTamanioGrilla.setText("Grilla");
        menuItemDefinirTamanioGrilla.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                menuItemDefinirTamanioGrillaActionPerformed(evt);
            }
        });
        editMenu.add(menuItemDefinirTamanioGrilla);

        menuItemVisualizar.setText("Origen, Puntos y Segmentos");
        menuItemVisualizar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                menuItemVisualizarActionPerformed(evt);
            }
        });
        editMenu.add(menuItemVisualizar);

        jMenuItem1.setText("Validar");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        editMenu.add(jMenuItem1);

        jMenuItem3.setText("Spaghetti");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem3ActionPerformed(evt);
            }
        });
        editMenu.add(jMenuItem3);

        jMenuItem4.setText("NAA");
        jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem4ActionPerformed(evt);
            }
        });
        editMenu.add(jMenuItem4);

        jMenuItem5.setText("Douglas Peucker");
        jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem5ActionPerformed(evt);
            }
        });
        editMenu.add(jMenuItem5);

        jMenuItem2.setText("Guardar");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });
        editMenu.add(jMenuItem2);

        menuBar.add(editMenu);

        setJMenuBar(menuBar);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(desktopPane, javax.swing.GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(desktopPane, javax.swing.GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
        );

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-800)/2, (screenSize.height-600)/2, 800, 600);
    }// </editor-fold>//GEN-END:initComponents

    private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
        System.exit(0);
    }//GEN-LAST:event_exitMenuItemActionPerformed

    private void menuItemDefinirTamanioGrillaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuItemDefinirTamanioGrillaActionPerformed
        // TODO add your handling code here:
        this.setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
        if ((this.miVentanaDefinicionGrilla == null) || (this.miVentanaDefinicionGrilla.isClosed())) {
            try {
                this.miVentanaDefinicionGrilla = new VentanaDefinicionGrilla();
            } catch (Exception e) {
                System.err.println(e);
            }
            this.getDesktopPane().add(this.miVentanaDefinicionGrilla, 1);
            this.miVentanaDefinicionGrilla.show();
        } else {
            this.miVentanaDefinicionGrilla.toFront();
        }
        this.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

}//GEN-LAST:event_menuItemDefinirTamanioGrillaActionPerformed

    private void menuItemVisualizarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_menuItemVisualizarActionPerformed
        this.setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
        if ((this.getMiVentanaVisualizacion() == null) || (this.getMiVentanaVisualizacion().isClosed())) {
            try {
                this.setMiVentanaVisualizacion(new VentanaVisualizacion());
            } catch (Exception e) {
            }
            this.getDesktopPane().add(this.getMiVentanaVisualizacion(), 1);
            this.getMiVentanaVisualizacion().show();
            getMiVentanaVisualizacion().dibujarDominio();
        } else {
            this.getMiVentanaVisualizacion().toFront();
        }
        this.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
    }//GEN-LAST:event_menuItemVisualizarActionPerformed

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
        this.setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
        miVentanaValidacion = new VentanaValidacion();
        this.getDesktopPane().add(miVentanaValidacion, 1);

        miEvaluacionDominio.crearDominioEvaluado();
        miVentanaValidacion.show();
        miVentanaValidacion.dibujarDominioValidado();
        this.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
    }//GEN-LAST:event_jMenuItem1ActionPerformed

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
        // TODO add your handling code here:
        this.setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("GeomainPU");
        EntityManager em = emf.createEntityManager();

        //Inicialmente se vacian todas las tablas
        //esto sucede porque las relaciones borran en CASCADA
        Query q = em.createQuery("delete from EvaluacionDominio e ");
        em.getTransaction().begin();
        q.executeUpdate();
        em.getTransaction().commit();


        //Se declaran los objetos persistentes
        jpa.EvaluacionDominio miEvaluacionDominioJPA = new jpa.EvaluacionDominio();
        jpa.DominioGeometrico miDominioGeometricoJPA = new jpa.DominioGeometrico();
        jpa.Grilla miGrillaJPA = new jpa.Grilla();
        jpa.ConjuntoS miConjuntoSJPA = new jpa.ConjuntoS();
        jpa.SegmentoDeRecta miSegmentoDeRectaJPA = null;
        jpa.ConjuntoP miConjuntoPJPA = new jpa.ConjuntoP();

        //Inicia la transaccion
        em.getTransaction().begin();

        miEvaluacionDominioJPA.setNombre("Evaluacion");
        em.persist(miEvaluacionDominioJPA);

        miDominioGeometricoJPA.setIdEvaluacionDominio(miEvaluacionDominioJPA);
        miDominioGeometricoJPA.setTipo("INICIAL");
        em.persist(miDominioGeometricoJPA);

        miGrillaJPA.setIdDominioGeometrico(miDominioGeometricoJPA);
        miGrillaJPA.setFilas((int) getEvaluacionDominio().getDominioInicial().getGrillaDominio().getFilas());
        miGrillaJPA.setColumnas((int) getEvaluacionDominio().getDominioInicial().getGrillaDominio().getColumnas());
        em.persist(miGrillaJPA);

        miConjuntoSJPA.setIdDominioGeometrico(miDominioGeometricoJPA);
        em.persist(miConjuntoSJPA);

        miConjuntoPJPA.setIdDominioGeometrico(miDominioGeometricoJPA);
        em.persist(miConjuntoPJPA);

        //Se hace commit de la transacción para que miConjuntoPJPA adquieran su ID autonumerico
        em.getTransaction().commit();

        //se comienza una nueva transacción
        em.getTransaction().begin();

        //Se guarda el conjunto de segmentos S
        Iterator  i = this.getEvaluacionDominio().getDominioInicial().getConjuntoS().iterator();
        while (i.hasNext()) {

            SegmentoLinea miSegmentoLinea = (SegmentoLinea) i.next();

            q = em.createNativeQuery(
                    " INSERT INTO geomain.dbo.segmentoDeRecta " +
                    " ( " +
                    " idConjuntoS " +
                    " , puntoInicial " +
                    " , puntoFinal " +
                    " ) " +
                    " VALUES " +
                    " ( " +
                    " " + miConjuntoSJPA.getIdConjuntoS() + " " +
                    " ,CONVERT(Point, ?1 ) " +
                    " ,CONVERT(Point, ?2 ) " +
                    " ) "
                    );

            q.setParameter(1, miSegmentoLinea.getOrigen().getCoordenadaX() + "," + miSegmentoLinea.getOrigen().getCoordenadaY() );
            q.setParameter(2, miSegmentoLinea.getFin().getCoordenadaX() + "," + miSegmentoLinea.getFin().getCoordenadaY() );
            q.executeUpdate();
        }

        i = this.getEvaluacionDominio().getDominioInicial().getConjuntoP().iterator();
        while (i.hasNext()) {

            Punto miPunto = (Punto) i.next();

            q = em.createNativeQuery(
                    " INSERT INTO geomain.dbo.punto " +
                    " ( " +
                    " idConjuntoP " +
                    " , punto " +
                    " ) " +
                    " VALUES " +
                    " ( " +
                    " " + miConjuntoPJPA.getIdConjuntoP() + " " +
                    " ,CONVERT(Point, ?1 ) " +
                    " ) "
                    );

            q.setParameter(1, miPunto.getCoordenadaX() + "," + miPunto.getCoordenadaY());
            q.executeUpdate();
        }

        //Termina la transaccion
        em.getTransaction().commit();



        //AHORA SE ALMACENA EL DOMINIO EVALUADO CON UN PROCEDIMIENTO SIMILAR
        

        //Se declaran los objetos persistentes menos miEvaluacionDominioJPA porque este ya esta creado
        miDominioGeometricoJPA = new jpa.DominioGeometrico();
        miGrillaJPA = new jpa.Grilla();
        miConjuntoSJPA = new jpa.ConjuntoS();
        miSegmentoDeRectaJPA = null;
        miConjuntoPJPA = new jpa.ConjuntoP();

        //Inicia la transaccion
        em.getTransaction().begin();

        miDominioGeometricoJPA.setIdEvaluacionDominio(miEvaluacionDominioJPA);
        miDominioGeometricoJPA.setTipo("EVALUADO");
        em.persist(miDominioGeometricoJPA);

        miGrillaJPA.setIdDominioGeometrico(miDominioGeometricoJPA);
        miGrillaJPA.setFilas((int) getEvaluacionDominio().getDominioEvaluado().getGrillaDominio().getFilas());
        miGrillaJPA.setColumnas((int) getEvaluacionDominio().getDominioEvaluado().getGrillaDominio().getColumnas());
        em.persist(miGrillaJPA);

        miConjuntoSJPA.setIdDominioGeometrico(miDominioGeometricoJPA);
        em.persist(miConjuntoSJPA);

        miConjuntoPJPA.setIdDominioGeometrico(miDominioGeometricoJPA);
        em.persist(miConjuntoPJPA);

        //Se hace commit de la transacción para que miConjuntoPJPA adquieran su ID autonumerico
        em.getTransaction().commit();

        //se comienza una nueva transacción
        em.getTransaction().begin();

        //Se guarda el conjunto de segmentos S
        i = this.getEvaluacionDominio().getDominioEvaluado().getConjuntoS().iterator();
        while (i.hasNext()) {


            SegmentoLinea miSegmentoLinea = (SegmentoLinea) i.next();

            q = em.createNativeQuery(
                    " INSERT INTO geomain.dbo.segmentoDeRecta " +
                    " ( " +
                    " idConjuntoS " +
                    " , puntoInicial " +
                    " , puntoFinal " +
                    " ) " +
                    " VALUES " +
                    " ( " +
                    " " + miConjuntoSJPA.getIdConjuntoS() + " " +
                    " ,CONVERT(Point, ?1 ) " +
                    " ,CONVERT(Point, ?2 ) " +
                    " ) "
                    );

            q.setParameter(1, miSegmentoLinea.getOrigen().getCoordenadaX() + "," + miSegmentoLinea.getOrigen().getCoordenadaY() );
            q.setParameter(2, miSegmentoLinea.getFin().getCoordenadaX() + "," + miSegmentoLinea.getFin().getCoordenadaY() );
            q.executeUpdate();

        }

        i = this.getEvaluacionDominio().getDominioEvaluado().getConjuntoP().iterator();
        while (i.hasNext()) {

            Punto miPunto = (Punto) i.next();

            q = em.createNativeQuery(
                    " INSERT INTO geomain.dbo.punto " +
                    " ( " +
                    " idConjuntoP " +
                    " , punto " +
                    " ) " +
                    " VALUES " +
                    " ( " +
                    " " + miConjuntoPJPA.getIdConjuntoP() + " " +
                    " ,CONVERT(Point, ?1 ) " +
                    " ) "
                    );

            q.setParameter(1, miPunto.getCoordenadaX() + "," + miPunto.getCoordenadaY());
            q.executeUpdate();
        }

        //Se guarda la representación saghetti
        Iterator<PoliLinea>  ip = this.getEvaluacionDominio().getRepresentacionSpaghetti().getSpaguettis().iterator();
        String queryDinamico =
                " INSERT INTO representacionSpaghetti "
                + " (idDominioGeometrico, spaghetti) "
                + " VALUES ";
        /*
         * Ejemplo de insercion de dos LineString en SQL Server 2008
         INSERT INTO representacionSpaghetti
         (idDominioGeometrico, spaghetti)
         VALUES
         (xxx,'LINESTRING(0.5 0.5, 10 10, 21 2)')
         ,(xxx,'LINESTRING(1 1, 11 11, 22 3)')
         */

        while (ip.hasNext()) {
            PoliLinea actual = ip.next();
            Coordinate[] recorrido = actual.getPoliLinea().getCoordinates();
            queryDinamico += " ( " + miDominioGeometricoJPA.getIdDominioGeometrico() + " , 'LINESTRING ( ";

            for(int c=0;c<recorrido.length;c++){
                Coordinate coordenadaActual = recorrido[c];
                queryDinamico += coordenadaActual.x + " " + coordenadaActual.y;
                if(c<(recorrido.length-1)){
                    queryDinamico += ", ";
                }else{
                    queryDinamico += " )' ";
                }
            }

            if(ip.hasNext()){
                queryDinamico += " ) , ";
            }else{
                queryDinamico += " ) ";
            }
        }

        q = em.createNativeQuery(queryDinamico);
        q.executeUpdate();

        //INSERCION DE NAA
        Iterator<ArcoDirigido>  ia = this.getEvaluacionDominio().getRepresentacionNAA().getArcos().iterator();
        queryDinamico =
                " INSERT INTO representacionNodoArcoArea "
                + " (idDominioGeometrico, etiqueta, puntoInicial, puntoFinal, poliLinea) "
                + " VALUES ";
         
         
        /*
         * Ejemplo de insercion en la tabla

         INSERT INTO representacionNodoArcoArea
         (idDominioGeometrico, etiqueta, puntoInicial, puntoFinal, poliLinea)
         VALUES
         (xxxxx,'prueba',CONVERT(Point, '1,2' ),CONVERT(Point, '3,4' ),'LINESTRING(5.5 6.6, 7.7 8.8, 9.9 10.10)')
         , (xxxxx,'prueba',CONVERT(Point, '1,2' ),CONVERT(Point, '3,4' ),'LINESTRING(5.5 6.6, 7.7 8.8, 9.9 10.10)')
 
         */ 

        while (ia.hasNext()) {

            ArcoDirigido arcoActual = ia.next();
            queryDinamico += " ( "
                    + miDominioGeometricoJPA.getIdDominioGeometrico()
                    + " , '" + arcoActual.getEtiqueta() + "' "
                    + " , CONVERT(Point, '" + arcoActual.getInicial().getCoordenadaX() + "," + arcoActual.getInicial().getCoordenadaY() + "' )"
                    + " , CONVERT(Point, '" + arcoActual.getFinal().getCoordenadaX() + "," + arcoActual.getFinal().getCoordenadaY() + "' )";

            Coordinate[] recorrido = arcoActual.getPoliLinea().getCoordinates();
            queryDinamico += " , 'LINESTRING( ";

            for(int c=0;c<recorrido.length;c++){
                Coordinate coordenadaActual = recorrido[c];
                queryDinamico += coordenadaActual.x + " " + coordenadaActual.y;
                if(c<(recorrido.length-1)){
                    queryDinamico += ", ";
                }else{
                    queryDinamico += " )' ";
                }
            }

            if(ia.hasNext()){
                queryDinamico += " ) , ";
            }else{
                queryDinamico += " ) ";
            }
        }

        q = em.createNativeQuery(queryDinamico);
        q.executeUpdate();

        //Termina la transaccion
        em.getTransaction().commit();
         


        //se cierra el entity Manager
        em.close();

        this.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

    }//GEN-LAST:event_jMenuItem2ActionPerformed

    private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
        this.setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
        miVentanaSpaghetti = new VentanaSpaghetti();
        this.getDesktopPane().add(miVentanaSpaghetti, 1);

        //miEvaluacionDominio.crearDominioEvaluado();
        miVentanaSpaghetti.show();
        miVentanaSpaghetti.dibujarNAA();
        this.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));


    }//GEN-LAST:event_jMenuItem3ActionPerformed

    private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed
        this.setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
        miVentanaNAA = new VentanaNodoArcoArea();
        this.getDesktopPane().add(miVentanaNAA, 1);

        //miEvaluacionDominio.crearDominioEvaluado();
        miVentanaNAA.show();
        miVentanaNAA.dibujarNAA();
        this.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        // TODO add your handling code here:
    }//GEN-LAST:event_jMenuItem4ActionPerformed

    private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem5ActionPerformed
        this.setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
        miVentanaDouglasPeucker = new VentanaDouglasPeucker();
        this.getDesktopPane().add(miVentanaDouglasPeucker, 1);

        miVentanaDouglasPeucker.show();
        miVentanaDouglasPeucker.dibujarDouglasPeucker(1);
        this.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
    }//GEN-LAST:event_jMenuItem5ActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Main().setVisible(true);

            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JDesktopPane desktopPane;
    private javax.swing.JMenu editMenu;
    private javax.swing.JMenuItem exitMenuItem;
    private javax.swing.JMenu fileMenu;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JMenuItem jMenuItem4;
    private javax.swing.JMenuItem jMenuItem5;
    private javax.swing.JMenuBar menuBar;
    private javax.swing.JMenuItem menuItemDefinirTamanioGrilla;
    private javax.swing.JMenuItem menuItemVisualizar;
    // End of variables declaration//GEN-END:variables

    /**
     * @return the desktopPane
     */
    public javax.swing.JDesktopPane getDesktopPane() {
        return desktopPane;
    }

    /**
     * @return the miEvaluacionDominio
     */
    public EvaluacionDominio getEvaluacionDominio() {
        return miEvaluacionDominio;
    }

    /**
     * @return the miVentanaVisualizacion
     */
    public VentanaVisualizacion getMiVentanaVisualizacion() {
        return miVentanaVisualizacion;
    }

    /**
     * @param miVentanaVisualizacion the miVentanaVisualizacion to set
     */
    public void setMiVentanaVisualizacion(VentanaVisualizacion miVentanaVisualizacion) {
        this.miVentanaVisualizacion = miVentanaVisualizacion;
    }
}
